void main() {
  xxx();
  print(add(1, 2));
  printString('张三', age: 18, gender: '女');
  printString('张三', age: 18);

  // 把函数存到一个变量上，相当于给函数改名字
  Function fn = xxx;
  fn();
  // 匿名函数
  Function fn2 = () {
    print('匿名函数');
  };
  fn2();
  // 箭头函数
  Function fn3 = (int a, int b) => a + b;
  print(fn3(1, 2));
  // 回调函数
  List list = [1, 2, 3, 4, 5, 6, 7, 8, 9];
  list.forEach((item) {
    print(item);
  });

  void fn4(Function fn) {
    fn();
  }

  fn4(() {
    print('回调函数');
  });
}

void xxx() {
  print('xxx');
}

int add(int a, int b) {
  return a + b;
}

// 函数的参数，可选参数使用{}
void printString(String name, {int? age, String? gender = '男'}) {
  print('$name, $age, $gender');
}
